Machine process for assigning interconnected components to locations in a planar matrix

ABSTRACT

Initially, components are assigned arbitrarily to locations in a planar matrix. Horizontal pairwise interchanges of adjacent components are then made if either (1) the absolute sum of the horizontal &#39;&#39;&#39;&#39;moments&#39;&#39;&#39;&#39; of the adjacent components or the system &#39;&#39;&#39;&#39;moment&#39;&#39;&#39;&#39; is made lower thereby. Vertical and diagonal pairwise interchanges are then made according to a similar criteria. This sequence of operations may be repeated as often as desired by the user until an acceptable configuration is obtained.

United States Patent Arnold Herbert Schelnman Deal, NJ.

[21] Appl. No. 36,233

[22] Filed May 11, 1970 [45] Patented Dec. 2], I971 [731 Assignee Bell Telephone Laboratorlea Incorporated Murray Hill, Berkeley Heights, NJ.

[72] Inventor [54] MACHINE PROCESS FOR ASSIGNING INTERCONNECTED COMPONENTS 'IO LOCATIONS IN A PLANAR MATRIX 14 Claims, 22 Drawing Figs.

[52] 0.8. Ci 340/1715 [5 l] Int. Cl G06f 9/06 [50] Field otSearch 340/1725 [56] Relerences Cited OTHER REFERENCES Lee, An Algorithin For Path Connections and its Applications IRE Trans, on Electronic Computers, Sept. 1961 pp. 316- 365.

CONMTX LOCMTX TRMMTX W Breuer, General Survey of Design Automation of Digital Computers," Proceedings of the IEEE, Vol. 54 No. 12 Dec. 1965, pp. 1708- 172i.

Kallas Computer Aided Wiring Designs, Record, Nov. 1964, pp. 343- 349.

Hyman et al. Computer Automated Design and Thermal Analysis of Printed Circuit Boards," Advances in Electronic Packaging Symposium Record Vol. 8 Aug. 1967 pp. 1- 14.

Bell Lab.

Primary Examiner- Raulfe B. Zache Assistant ExaminerR. F. Chapuran Attorneys-R. J. Guenther and Kenneth B. Hamlin ABSTRACT: Initially, components are assigned arbitrarily to locations in a planar matrix. Horizontal pairwise interchanges of adjacent components are then made if either (i) the absolute sum of the horizontal moments of the adjacent components or the system moment is made lower thereby. Vertical and diagonal pairwise interchanges are then made according to a similar criteria. This sequence of operations may be repeated as often as desired by the user until an acceptable configuration is obtained.

I w m PLCMTX DE LMTX PATENTEIJ DECZI ml FIG. 2

SHEET OZUF 16 ksTART READ INPUT DATA INTO PLCMTX CONMTX LOCMTX TRMMTX CALCULATE ENTRIES OF W MATRIX AND DELMTX SET CHANGE I O EXAMINE HORIZONTALLY ADJACENT COMPONENTS (FIG. 3)

EXAMINE VERTICALLY ADJACENT COMPONENTS E XAMINE D IAGONALLY ADJACENT COMPONENTS (ALONG D IAGONAL) TOWARD RIGHT (FIG. 5A a 5B) EXAMINE DIAGONALLY ADJACENT COMPONENTS (ALONG DIAGONAL TowAF g LEFT INCREMENT ITERATION NO. NIT

IF NIT m, CHANGE NETCN AND/OR NET, ETC.

PRINT CURRENT PLCMTX 7 END PATENTED B582] 1971 FIG. 3

SWCHK SUBROUTINE (FIGA) SHEET 03 0F 16 FROM BLOCK 2IO EXAMINE HORIZONTALLY ADJACENT COMPONENTS IN PLCMTX(I,JJ&

INITIALIZE OLDSUM OLDCNSUM NEWSUM NEWCNSUM SET NN=| YES SET CHANGE=I; UPDATE PLCMTX, LOCMTX DELMTX INCREMENT I,J AS REQUIRED ALL ADJACENCIES CHECKED? 1 TO BLOCK 244 FIG. 4

SAVE PREVIOUS SYSTEM MOMENT OLDSUM I OLDSUM +DELMTX(N COMP+|,NN)

SAVE PREVIOUS COMPONENT F.0.M. OLDCNSUM OLDCNSUM ABs[OEEMTx(cN1,NN)] /408 +ABS [DELMTx cN2,NN)]

CALCULATE NEW VALUE OF NET MOMENT FOR CNI COMP(CN|) I DELMTX(CNI,NN) "W (CNLNN) -/4]2 -CONMTX(CNI,CN2)

CALCULATE NEW VALUE OF NET MOMENT FOR CN2 COMP (CN2)= DELMTX(CN2,NN)+W(CN2,NN) [4T6 +cONMTx (cN2,cN|)

CALCULATE NEW VALUE FOR COMPONENT FQM.

NEwcNsuM NEWCNSUM ABS [COMP (cNT)] 420 +ABS [COMP (CN2)] CALCULATE NEw VALUE FOR SYSTEM MOMENT NEWSUM NEwsuM ABS [cOMP (CN 1)] IF NEwcNsuM-OLOcNsuM NETcN,THEN sET SWITCHII, OTHERWISE sET SWITCHIO lF NEWSUMOLDSUM NET,THEN sET SWITCHII OTHERWISE sET SWITCHIO RETURN PATENTEU EH22! I97! SHEET 05 HF 16 FIG. 5A

EXAMINE DIAGONALLY ADJACENT COMPONENTS IN PLCMTX (m) .& PLCMTX (mum) BOTH=O? INITIALIZE 514 3k%%%UM NEWSUM O NEWCNSUM (TO CHECK HORIZONTAL) SWCHK (H04) SIQ SAVE RESULTS 522 SET NN Z (TO CHECK VERTICAL) SWCHK (no.4) 5m PATENTEnmiczmn 3.6291843 SHEET GBDF 16 FIG. 5B

SWITpCH O SET CHANGE l,- 530 UPDATE PLCMTX,

LOCMTX, DELMTX INCREIVIENT I, J AS REQUIRED ALL ADJACENCIES CHEgKED YES TO BLOCK 252 FIG. 5A

PATENIEI] me I Ism (JUN- COMPONENTS TOTAL 20 I6 F/G. 7B

HORIZONTAL INTERCHANGES O I 0 0 I O 0 2 COMPONENTS 3 PAIENIEnmcznm $629,843

SHEET 080F 16 FIG. 7C

VERTICAL INTERCHANGES 0 00 000 000 000 H20 020 o a o 1 30 034N254 |*2'4 0'24 2 com owams F/G.7D

DIAGONAL INTERCHANG'ES v COMPONENTS PATENIEB m2! an SHEET DSUF 16 FIG. 75

REMAINING INTERCHANGES O O O O O I COMPONENTS COMPONENTS F/G. 7F

FINAL PLACEMENT PATENTED 05021 an 3,629,843 sum 10 0F 16 FIG. 8A

CGPLACE: PROC OPTIDNSI MAIN) CGPLACE: PROC OPTIONSIMAINI 2 /*CCPLACE CALCULA TES A HORI ZEVERTTCAL GR AUTENT FOR EACH ARE GIVEN HE IGHTS EQUAL TO NUMBER OF CONNECTIONS TO MOVEABLE COMPONENT.THE MOMENT I S ZERO IF MOVFABLE COMP IS AT I TS CENTER OF GRAVI TY. THE ABS VAL OF MOMENT THEN IS A MEASURE OF MINIMIZE THE SUM OF ABS VALUES FOR ALL COMPONENTS.AOJACENT GRID POSITIONS HAVE A DISTANCE OF ONE DCL PLCMTXINROW,NCOLI EXT CTL FIXED BIN CDNMTXI OZNCOMP'O2NCOMPI EXT CTL FIXED BIN,

ITOTAL,N ITIF IXEDI 10) BINARY ILOCMTXIO=NCOMP,?.I 1 WIO1NCOMP,ZI I EXT CTL F IXEl) BINARY OELMTXIO=NCOMP+I 2) FXT CTL FIXEDI 1h) BINARY I TRMMTX I NCOMPM) EXT CTI. FIXEDI lOI BINARY I P CNI (IN2,SHITCHI FIXFD BINARY NORM INIT I l I 0 ARGI oI FIXED B [NARY' ICOMPIOZNCOMPI 1 TFMPCOMPIOZNCOMPI IEXT CTL FIXED BIN, TEMP F I XEO BI NARY; DCL ICHANGLOL OCNSUMINEHCNSUMI FIXED BINARY OCL OLDSUM F I XED BINARY /**DELMTX ROW 0 I S FOR EMPTY PLACE MATRIX POS WHICH ARE Ol; /**ROW NCOMP+I IS FOR ACCUMULA TION OF TOTALS***/; DCL RTNLOC I 3) LABEL GET L ISTINROH NCOL I COPY NI T=Di AL LOCATE PLCMTX i PLCMTX=O= GET L I STINCOMP|NPATHSI COPY ALLOCA TE CONMTX LOCMTX I DELMTX TRMMTX ALLOCATE COMP F ALLOCATE TEMPCOMP AL LUCA TE H I WIO,II WIO,?I=O; CONMTX=O TQMMTX=OI DELMTX=OI l* ATHS= UT LISTI ENTER PATH LIST,FORM IS: I I PUT L I STI 'PATHfl II OF COMPONENTS IN MULT,COMPONENT IDENTS' I PUT L I STI IF COMPONENT IS A TERM INAL [DENT IFY AS: I

READP: GET LIST I I yJI COPY IF I- =NI THEN GO TO ERR I;

GET LI STI ICOMPIKI DO K=I TO J I I PATHI: DO K=I TO J;

PATHZ: DO L=I TO J;

N=COMPIKI I P=COMPIL I I IF N I THEN GO TO P2; IF P I THEN GO TO NEGP;

INTERCONNECTED COMPONENTS TO LOCATIONS IN A PLANAR MATRIX BACKGROUND OF THE INVENTION This invention relates to a method for operating a machine, such as a digital computer, in accordance with an algorithm for assigning or placing elements in a planar matrix.

Considerable interest has centered on finding automated methods of aiding in product design. This is especially true in the areas such as printed and integrated circuit design. With the miniaturization of circuits and components and the corresponding increase in component density on printed and integrated circuit structures, the problem of properly placing components on such structures, to facilitate easy routing of interconnections has become more acute.

A number of methods employing various placement criteria have been devised for automated component placement. The placement criterion most commonly employed in such methods is minimization of total wire length (see, for example, Rutman, R. A., An Algorithm for the Placement of Interconnected Elements Based on Minimum Wire Length, AFIPS Conference Proceedings, Vol. 25, 1964, SJCC, pp. 477-491). It has been suggested that utilization of this and similar criteria which tends to cause the components to converge on each other may, at times, result in localized areas of congestion on the circuit structure. (Congestion may be defined as a concentration of leads in some area around a component.) This, in turn, can make routing of interconnections difficult.

SUMMARY OF THE INVENTION It is an object of this invention, in view of the abovedescribed prior art arrangements, to provide a method of placing interconnected elements in a planar matrix so as to facilitate ease of routing.

It is another object of the present invention that such method be implementable on a general purpose computer.

It is still another object of the invention that such implementation have a fast running time.

These and other objects of the present invention are realized in a specific illustrative algorithm which utilizes a center of gravity criteria for the placement of components in a planar matrix. That is, the components are assigned locations in the matrix such that the sum of the movements of the components appears to be minimized. This algorithm, to be described in more detail hereafter, may be programmed to operate on a general purpose computer.

Although reference will hereafter be made to such terms as components,matrix, etc. in discussing the algorithm, it should be understood that such items would be represented by electrical signals of one kind or another in the implementation of the algorithm on a general purpose computer. Thus, for example, when discussing the interchanging of components" in a matrix, it should be understood that this means interchanging stored data (in memory) which represents the components. The invention is described in these terms for clarity and because such terms are familiar to persons who might implement the algorithm on a general purpose computer, i.e., programmers.

Initially, the components are assigned either arbitrarily or by some initial placement process to locations in a planar matrix having left, right, top and bottom terminals. Pairwise interchanges of horizontally adjacent electrical are then made if either l the absolute sum of the horizontal moments of the components interchanged or (2) the system moment is made lower thereby. The horizontal moment of a component i is defined by N i k21 ik ik+kE ik lk where M equals the number of connections from component ito component (or terminal) k, DH is the horizontal distance therebetween, the symbols L and R represent the left and right terminals respectively of the matrix, and N is the total number of components. The system moment is defined by where MV equals equals the vertical distance between component i and component (or terminal) k, and Tand B represent the top and bottom terminals respectively of the matrix. Distances to the left of and up from a component are negative while distances to the right of and down from a component are positive. Note, that for horizontal interchanges, there will be no change in M V and for vertical interchanges, there will be no change in MH.

After all horizontally adjacent components have been examined for possible interchange, vertical and diagonal pairwise interchanges are then made according to a criterion equivalent to that for horizontal interchanges. This sequence of operations may be repeated as often as desired by the user.

The strategy of interchanging components if either of the above-mentioned criterion is fulfilled causes considerable movement of the components resulting in more possibilities for interchanges and a lower probability of a component being blocked, i.e., locked into an undesirable location. The criteria could also be relaxed to allow interchange even if there were no change in MH (or MV) or SM. This would be done for initial iterations to allow even more initial movements of components.

BRIEF DESCRIPTION OF THE DRAWINGS A complete understanding of the present invention and of the above and other objects and advantages thereof may be gained from a consideration of the following detailed description of an illustrative showing thereof presented hereinbelow in connection with the accompanying drawings in which:

FIG. 1A shows a graphical representation of a planar matrix structure on which components might be placed;

FIG. 1B and 1C show graphical representations of various matrices utilized in an implementation of the present invention;

FIG. 2 shows a flow diagram representing a specific illustrative machine algorithm for practicing data processing in accordance with the present invention;

FIG. 3 shows a flow diagram representing the detailed steps of block 214 of the FIG. 2 algorithm;

FIG. 4 shows a flow diagram of a subroutine utilized in the algorithm represented in FIG. 2;

FIG. 5A and 5B show a flow diagram representing the detailed steps of block 248 of the FIG. 2 algorithm;

FIG. 6 shows the positioning of FIG. 5A and 53 with respect to each other;

FIG. 7A shows an illustrative initial placement matrix and its corresponding DELMXT (defined later);

FIG. 7B, 7C, 7D, 7E and 7F show representation of the placement matrix of FIG. 7A as it appears after successive applications of the algorithm represented in FIG. 2; and

FIG. 8A, 8B, 8C, SD, 8E, 8F and 8G show a program implementation of the algorithm of FIG. 2.

DETAILED DESCRIPTION In accordance with the present invention, interconnected components or elements are to be assigned locations on a planar matrix structure of the type graphically shown in FIG. 1A. The structure thereshown includes L M positions or locations in which a set of components would be assigned. Connections of the components to other components outside the set would be made via a top, bottom, left or right terminal as the case required.

FIG. 1B and 1C show graphical representations of various matrices which will be employed in an illustrative algorithm to be described later. These matrices include a placement matrix (PLCMTX), a connection matrix (CONMTX), a location matrix (LOCMTX), a terminal matrix (TRMMTX), a composite weight matrix (W), and a component moment matrix (DELMTX). PLCMTX (shown in FIG. 1B) is simply an L by M dimension matrix which defines the initial or starting arrangement of components as specified arbitrarily or by some initial component placement process. The illustrative algorithm begins with an arrangement of components as defined by this matrix and then commences to rearranged the components as will be discussed. The entries at the intersections of various rows and columns of PLCMTX represent the various components to be examined.

CONMTX (shown in FIG. 1C) is an N+l by N+l matrix in which the entry at the intersection of row i, and implementations j specifies the number of interconnections between the the i" and j' components. Note that row i refers to the (i+l row because rows are numbered from to N. Hence row 0 is the 1*" row, etc. Row 0 represents a fictitious component which is assumed to be located in all empty locations of PLCMTX. This enables empty locations to be treated the same as occupied locations thus eliminating the need to provide special tests, e.g. in any computer program implementation of the algorithm, to differentiate between empty and occupied locations. This would speed up the running time of any such implementation. The parameter N represents the total number of components in question.

LOCMTX (FIG. 1C) is an N+l by 2 matrix in which the entries at the intersections of row i with the 1 and 2" column specify the row and column respectively in PLCMTX where component i is located.

TRMMTX (FIG. 1C) is an N+l by 4 matrix in which the entries at the intersections of row i with the I, 2", 3" and 4" columns specify the number of connections from component i to the top, bottom, left, and right edges respectively of the structure on which the components are to be mounted.

The W matrix (FIG. 1C) is an N+l by 2 matrix in which the entry of the intersection of row i and the 1" column represents the sum of the entries of row i of CONMTX plus the entries of row i and the 3" and 4" columns of TRMMTX. The entry of the intersection of row i and the 2" column of the W matrix represents the sum of the entries of row i of CONMTX plus the entries of row i and the 1" and 2" columns of TRMMTX. The significance of the above entries of the W matrix can be explained as follows. The weight of a component (defined earlier) might be viewed as a measure of the effect of the movement of that component on the total system. Movement of a component in the horizontal direction however does not affect the connections of that component to the top and bottom terminals of the structure and likewise the movement of a component in the vertical direction does not affect the connections of the component to the left and right terminals of the structure. Therefore two entries for each component are provided in the W matrix-one entry specifying the weight of a component including the effect of being connected to the top and bottom terminals and the other entry specifying the weight of the component including the effect of being connected to the left and right terminals of the structure. The

utility of this will become apparent later.

DELMTX (FIG. 1C) is an N+2 by 2 dimension matrix, in which the entry at the intersection of row i and the 1'' column specifies the net horizontal movement for the i" component. This entry is calculated in accordance with the expression N MHi: E ik+ given earlier. The horizontal distance, DH between components i and k is equal to the distance separating the two columns in PLCMTX in which components 1' and k are located. If the two components are in the same column, then, of course, the horizontal distance is zero. The expression includes the effects of connecting to the left and right terminals as well as the effects of connecting to the other components. The entry at the intersection of row i and the 2" column of DELMTX specifies the net vertical moment for the i component. This entry is calculated in accordance with the expres- SIOII E ik Ik N MVi= g W DVm+ i ki Finally, the intersection of the last row and the 2" column specifies the net vertical system moment which equals the sum of the absolute values of the entries of rows 1 to N of the 2" column, i.e.,

A specific illustrative algorithm for carrying out the principles of the present invention may be described with respect to the flow chart shown in FIG. 2. This algorithm is implementable on a general purpose digital computer such as, for exam ple, an IBM 360/65.

The first step of the algorithm, as indicated in block 202 of FIG. 2, is to read input data into memory in portions set aside for a placement matrix (PLCMTX), a connection matrix (CONMTX), a location matrix (LOCMTX), and a terminal matrix (TRMMTX). The information in PLCMTX specifies the initial placement of components.

The next step of the algorithm, as indicated in block 206 of FIG. 2, is to calculate the entries for a W matrix and a component moment matrix (DELMTX) in accordance with the previously noted expressions. A variable, designated CHANGE," is then set equal to zero. This variable indicated whether or not a change in the placement of components have been made during an iteration of the algorithm. The use of this variable will be indicated later.

The next step of the algorithm, is to select for analysis two adjacent locations in PLCMTX. This step is represented generally to block 214 of FIG. 2 which is shown in detail in FIG. 3. The locations selected are designated by the variations I and J which specify the row and column respectively of one location in PLCMTX, the other location being specified by in crementing one of these variables. Thus, I and J are both initially set equal to l specifying the location-row 1, column I. The other location to initially be examined is I and J+l. (See block 316 of FIG. 3) These locations are then examined to determine if both do not contain components (block 318 of FIG. 3). If neither contains a component, then the algorithm goes to block 332 where either the variable I or the variable .I is incremented by I (this will be explained later). If either contains a component, the algorithm moves to block 320.

At block 320, the locations are examined to determine if either component is negative. A negative specification for a component indicates that the component indicates that the component is not to be moved from the location (for whatever reason the user has). If either component is specified as being negative, the algorithm moves to block 332. If neither is negative, the algorithm moves to block 322 where variables OLD- SUM, OLDCNSUM, NEWSUM and NEWCNSUM are set equal to zero. These variables will be defined shortly. In the next step in the algorithm (block 324), a variable NN is set equal to 1 Setting NM=1 indicates that horizontal adjacencies are to be examined for possible interchange. As will be indicated later, if vertical adjacencies are to be examined, then NN would be set equal to 2. From block 324, the algorithm moves to a subroutine SWCHK (block 325) shown in detail in FIG. 4. The subroutine SWCHK will be described assuming NM=].

The first step of the subroutine is to set the variable OLD- SUM equal to the previous value of this variable plus (since NM= 1) the present value of the net horizontal system moment SM (OLDSUM would be set equal to its previous value plus the present value of the net vertical system moment SM is NM=2). For examination of strictly horizontal (or vertical) adjacencies, the previous value of OLDSUM is always zero, but for examination of diagonal adjacencies (to be discussed later), OLDSUM may be zero or some other value. The net horizontal system moment as indicated earlier is given by the entry in the 1" column and row N+l of DELMTX.

The next step of SWCHK is to set the variable, OLDCN- SUM, equal to the previous value of this variable plus the present value of the sum of the absolute values of the horizontal moments (since NM+1) of the components being examined (see block 408 of FIG. 4). Again, for strictly horizontal (or vertical) adjacencies, the previous value of OLDCN- SUM is always zero, whereas for diagonal adjacencies, it may be zero or other values. The net horizontal moment of component 1 (CN 1), i.e., the component located in PLCMTX (i=1, J=l is found in DELMTX (CN 1, NN=l as indicated in block 408. The net horizontal moment of component 2 (Cl-I 2), i.e., of the component located in PLCMTX (I=1, J+l=2), is found in DELMTX (CN 2, NN=l It should be understood that one of the two locations of PLCMTX Being examined may not contain a component. Such locations, as indicated earlier, are assumed to contain a fictitious component 0 represented by row 0. The contents of row 0 are all zero.

Next, a new net horizontal moment for CN 1 (represented by COMP (CN 1)) is calculated assuming CN 1 has been interchanged with CN 2 (see block 412). This calculation is made as follows. Since CN 1 would be moved to the right in the interchange and therefore in the positive direction, the entry found in W (CN 1, NN=l) and the entry found in CONMTX (CN 1, CN 2) are both subtracted from the entry found in DELMTX (CN 1, NN=l In other words, the composite horizontal weight of CN 1 and the weight of CN 1 with respect to CN 2 are subtracted from the current net horizontal moment of CN 1. This yields the new net horizontal moment for CN 1 assuming it has been interchanged. This rather simple calculation for deriving the new moment is made possible by the unique method of storing the parameters in the various matrices utilized and by restricting component movement to one space. Lengthy recomputation of the horizontal moment of a component from the individual connections of the component (for each contemplated interchange) is thereby avoided.

Calculation of a new net horizontal moment for CN 2, on the assumption it has been interchanged with CN 1, is carried out in a similar fashion except CN 2 would be moved to the left and thus in the negative direction so the composite horizontal weight of CN 2 and the weight of CN 2 with respect to CN 1 are added rather than subtracted from the current net horizontal moment of CN 2. This is indicated in block 416.

A new figure of merit for the components interchanged is then computed in accordance with block 420. This new figure of merit, identified by the variable NEWCNSUM, is equal to the previous value of NEWCNSUM (which for strictly horizontal or vertical adjacencies is zero) plus the absolute value of the net horizontal moment of CN 1 (computed in block 412) and the absolute value of the net horizontal moment ofCN 2 (computed in block 416).

The next step of the subroutine is to calculate the new horizontal system moment SM in accordance with block 424. This is done by first setting variable NEWSUM equal to the previous value of NEWSUM (which, for strictly horizontal or vertical adjacencies, as in the previous steps, is zero) plus the absolute value of the new net horizontal moment of CN 1 and the absolute value of the new net horizontal moment of CN 2. The net horizontal moments for all other components L are then calculated by the formula N GOMP(L)= 2 DELMTX(L, NN=l) +C0NMTX(L: CN 1) N MIXQ L N2) where the suiiima tionis overall Noam ponents except CN 1 and CN 2. In other words, for each component L, the entry in CONMTX(L,CN 2) is subtracted from the entry in DELMTX(L,NN=d) and the entry in CONMTX(L, CN 1 is added thereto to obtain the net horizontal moment for component L. In this case, each component L is viewed as moving to the left with respect to CN 1 (and thus CONMTX(L,CN l is added) and to the right with respect to CN 2 (and thus CONMTX(L,CN 2) is subtracted). The net horizontal moments for each component L are then added to the variable NEWSUM to obtain a new horizontal system moment.

In the final step of the subroutine SWCHK, the variable OLDCNSUM is subtracted from the variable NEWCNSUM and if the difi'erence is less than a variable NETCN, then SWITCH is set to one (see block 428). The variable NETCN is chosen arbitrarily depending on the strategy desired by the user. For example, if the user desired that a significant reduction in the component figure of merit be obtained before making an interchange, then NETCN would be made negative, e.g., "-5. If, one the other hand, the user desires that components to be interchanged even if no or very little reduction in component figure of merit is obtained thereby, then NETCN would be set equal to l or 0 respectively. It may also be desirable in some circumstances to set NETCN equal to one value for several iterations and then set it equal to another value for subsequent iterations.

Next, the variable OLDSUM is subtracted from the variable NEWSUM and if the difference is less than a variable NET, then SWITCH is set to one. As is the case with the variable NETCN, the variable NET is chosen arbitrarily by the user. The same considerations apply in choosing the value of NET. As noted earlier, setting SWITCH equal to one indicates that the components being examined are to be interchanged. At the conclusion of the final step of the subroutine, the algorithm returns to the main routine and specifically to block 326 of FIG. 3.

After leaving the subroutine SWCHK, the algorithm examines the variable SWITCH to determine if it is zero, i.e., if no interchange is to be made (see block 326). If SWITCH 0, the algorithm moves to block 332. If SWITCH l, the algorithm moves to block 328, where the variable CHANGE is set equal to l, and the matrices PLCMTX, LOCMTX and DELMTX are updated to reflect the subject interchange of CN 1 and CN 2.

Next, in accordance with block 332 the variable I or J is incremented. Specifically, for horizontal adjacencies, the variable .1 is incremented by one after examination of each pair of components until J=M (the total number of columns in PLCMTX) immediately after which the variable I is incremented by one and J is reset to J=l. After the iteration following this incrementation, J is again incremented by one, etc.

If, after an incrementation of I or .I, all horizontal adjacencies have not been checked, the algorithm returns to block 318 and the process of composite block 314 is repeated. Repetition of this process continues until I=L (the total number of rows in PLCMTX) and J=M (indicating the last of 

1. A machine process for assigning N electronic components to locations in a planar matrix having top, bottom, left, and right terminals, said components being initially positioned in any configuration, comprising the steps of interchanging horizontally adjacent components i and j if the system moment is made lower thereby, where Wik equals the number of connections from component i to component (or terminal) k, DHik is the horizontal distance between component i and component (or terminal) k, DVik is the vertical distance between component i (or terminal) k, the symbols L, R, T and B represent the left, right, top and bottom terminals respectively of said planar matrix and where one direction of the vertical is positive and the other is negative and one direction of the horizontal is positive and the other is negative, interchanging vertically adjacent components if the system moment SM is made lower thereby, and interchanging diagonally adjacent components if the system moment SM is made lower thereby.
 2. interchanging horizontally adjacent components i and j if either
 2. A process as in claim 1 further comprising the steps of interchanging horizontally adjacent components i and j if the sum MHi + MHj is made lower thereby, interchanging vertically adjacent components i and j if the sum MVi + MVj is made lower thereby, and interchanging diagonally adjacent components i and j if the sum MHi + MHj + MVi + MVj is made lower thereby.
 2. calculating digital representations of an N+1 by 2 composite weight matrix W in which the entry at the intersection of row i and the 1st column thereof represents the sum of the entries of row i of CONMTX plus the entries of row i and the 3rd and 4th columns of TRMMTX and wherein the entry at the intersection of ROW i and the 2nd column of said W matrix represents the sum of the entries of row i of CONMTX plus the entries of row i and the 1st and 2nd columns of TRMMTX,
 2. ( MHi + MHj + MVi + MVj ) -( MHi* + MHj* + MVi* + MVj* )<NET B. SM-SM* <NET.
 3. calculating digital representations of an N+2 by 2 matrix, DELMTX, in which the entry at the intersection of row i and the 1st columns specifies the net horizontal moment for object i equal to the entry at the intersection of row i and the 2nd column specifies the net vertical moment for object i equal to the entry at the intersection of row N+1 and the 1st column thereof specifies the net horizontal system moment which equals and the entry at the intersection of row N+1 and the 2nd column specifies the net vertical system moment which equals where Wik represents the number of connections from object i to object (or PLCMTX edge) k, DHik represents the horizontal distance between object i and object (or PLCMTX edge) k, DVik represents the vertical distance between object i and object (or PLCMTX edge) k, the symbols L, R, T and B represent the left, right, top and bottom edges of PLCMTX, and where distances to the left of and up from an object in PLCMTX are negative and distances to the right of and down from an object in PLCMTC are positive,
 3. interchanging vertically adjacent components i and j if either a. ( MVi + MVj )-( MVi* + MVj* )<NETCN, or b. SM-SM* <NET.
 3. In a data processing system, a method of assigning interconnected electronic components to locations in a planar matrix having top, bottom, left and right terminals comprising the steps of
 4. A method as in claim 3 further comprising the step of
 4. setting a variable CHANGE 0,
 4. interchanging diagonally adjacent components i and j if either
 5. setting a variable I 1 and a variable J 1,
 5. A method as in claim 4 further comprising the step of
 5. repeating steps (2) through (4) if a. any interchange of components shall have been made in steps (2) through (4), and b. the number of iterations of steps (2) through (4) is less than m, an arbitrary integer and
 6. terminating the process if no interchange of components shall have been made in steps (2) through (4).
 6. going to step (19) if no objects are located in PLCMTX (I,J) or PLCMTX (I,J+ 1),
 6. A method as in claim 5 further comprising the steps of
 7. setting variables OLDSUM, OLDCNSUM, NEWSUM and NEWCNSUM equal to 0 and a variable NN 1, if an object is located in either PLCMTX (I,J) or PLCMTX (I,J+ 1), where the entry of PLCMTX (I, J) is identified as CN 1 and the entry of PLCMTX (I,J+1) is identified as CN 2,
 7. A method as in claim 6 further comprising the steps of
 7. performing steps (2) through (4) for NETCN 0 and NET O,
 8. repeating step (7) if a. any interchange of components shall have been made in step (7), and b. the number of iterations of steps (2) through (4) and step (7) is less than n, an arbitrary integer greater than m, and
 8. calculating and storing OLDSUM OLDSUM + DELMTX (N+1, NN), 9 calculating and storing OLDCNSUM OLDCNSUM + ABS (DELMTX (CN 1, NN)) +ABS( DELMTX (CN 2, NN)),
 8. A method as in claim 7 further comprising the steps of
 9. A process for determining the placement of N interconnected electronic circuit objects on a planar matrix structure comprising the steps of
 9. terminating the process if no interchange of components shall have been made in step (7).
 10. interchanging horizontally adjacent components i and j if SM-SM* <0
 10. A process as in claim 9 further comprising the steps of
 10. calculating and storing a value COMP (CN 1) DELMTX (CN 1, NN) -W (CN 1, NN) - CONMTX (CN 1, CN 2),
 11. calculating and storing a value COMP (CN 2) DELMTX (CN 2, NN) + W (CN 2, NN) + CONMTX (CN 2, CN 1
 11. interchanging vertically adjacent components i and j if SM-SM*< 0
 11. A process as in claim 10 further comprising the steps of
 12. A process as in claim 11 further comprising the steps of
 12. interchanging diagonally adjacent components i and j if SM-SM< 0
 12. calculating and storing a value NEWCNSUM NEWCNSUM +ABS (COMP (CN 1) + ABS (COMP (CN 2)),
 13. calculating and storing a value NEWSUM NEWSUM + ABS (COMP (CN 1)) + ABS (COMP (CN 2)),
 13. repeating steps (10) through (12) if a. any interchange of components shall have been made in steps (10) through (12), and b. the number of iterations of steps (2) through (4), (7), and (10) through (12) which shall have been performed is less than g, an arbitrary integer greater than n and
 13. A process as in claim 12 further comprising the steps of
 14. terminating the process if no interchange of components shall have been made in steps (10) through (12) or if the number of iterations of steps (2) through (4), (7), and (10) through (12) which shall have been performed equals q.
 14. calculating a value where the summation Sigma is carried out for all objects L except CN 1 and CN 2,
 14. A process as in claim 13 wherein NETCN and NET are initially set equal to 1 and wherein step (57) comprises the step of decrementing NETCN and NET to 0 if NIT m.
 15. calculating and storing NEWSUM NEWSUM + COMP (L),
 16. setting SWITCH 1 if NEWCNSUM - OLDCNSUM < NETCN, or if NEWSUM - OLDSUM < NET, otherwise setting SWITCH 0, where NETCN and NET are variables each of arbitrarily cHosen value,
 17. going to step (19) if SWITCH 0,
 18. setting CHANGE 1 and updating PLCMTX, LOCMTX and DELMTX to reflect the interchange of the entries of PLCMTX (I,J) and PLCMTX (I,J+1) if SWITCH 1,
 19. incrementing J by one,
 20. if J M, incrementing I by one and setting J 1, and
 21. repeating steps (6) through (20until I L and J M.
 22. setting I I and J 1 if I L and J M,
 23. going to step (28) if no objects are located in PLCMTX (I,J) or PLCMTX (I+1,J),
 24. setting variables OLDSUM, OLDCNSUM, NEWSUM, and NEWCNSUM equal to 0 and variable NN 2 if an object is located in either PLCMTX (I,J) or PLCMTX (I+1,J), where the entry of PLCMTX (I,J) is identified as CN 1 and the entry of PLCMTX (I+ 1,J) is identified CN 2,
 25. performing steps (8) through (16),
 26. going to step (28) if SWITCH 0,
 27. setting CHANGE 1 and updating PLCMTX, LOCMTX and DELMTX to reflect the interchange of the entries of PLCMTX (I,J) and PLCMTX (I+1,J) if SWITCH 1,
 28. incrementing J by one,
 29. if J M+1, incrementing I by one and setting J 1, and
 30. repeating steps (23) through (29) until I L.
 31. setting I 1 and J 1 if I L,
 32. going to step (39) if no objects are located in PLCMTX (I,J) or PLCMTX (I+1,J+1),
 33. setting variables OLDSUM, OLDCNSUM, NEWSUM, and NEWCNSUM equal to 0 and variable NN 1 if an object is located in either PLCMTX (I,J) or PLCMTX (I+I,J+1), where the entry of PLCMTX (I, J) is identified as CN 1 and the entry of PLCMTX (I+1, J) is identified as CN 2,
 34. performing steps (8) through (16),
 35. setting NN 2, 36.performing steps (8) through (16),
 37. going to step (39) if SWITCH 0,
 38. setting CHANGE 1 and updating PLCMTX, LOCMTX and DELMTX to reflect the interchange of the entries of PLCMTX (I,J) and PLCMTX (I+1,J+1) if SWITCH 1,
 39. performing steps (19) and (20), and 40, repeating steps (32) through (39) until I L-1 and J M.
 41. setting I 1 and J 2 if I L-1 and J M,
 42. going to step (53) if no objects are located in PLCMTX (I,J) or PLCMTX (I+1, J-1),
 43. performing steps (8) and (9,
 44. calculating and storing a value COMP (CN 1) DELMTX (CN 1, NN) + W (CN 1, NN) + CONMTX (CN 1, CN2),
 45. calculating and storing a value COMP (CN 2) DELMTX (CN 2, NN) - W (CN 2, NN) - CONMTX (CN 2, CN 1),
 46. performing step (13),
 47. calculating and storing a value where the summation Sigma is carried out for all objects L except CN 1 and CN 2,
 48. performing steps (15) and (16),
 49. setting NN 2,
 50. performing steps (8), (9) and (44) through (48),
 51. going to step (53) if SWITCH 0,
 52. setting CHANGE 1 and updating PLCMTX, LOCMTX and DELMTX to reflect the interchange of the entries of PLCMTX (I,J) and PLCMTX (I+1, J-1) if SWITCH 1, 53 incrementing J by one.
 54. if J M+1, incrementing I by one and setting J 2,
 55. repeating steps (42) through (54) until I L.
 56. incrementing a variable NIT by one if I L, where NIT represents the number of iterations of steps (4) through (55),
 57. decrementing NETCN and NET if NIT m and incrementing m, where m is an arbitrarily chosen variable,
 58. repeating steps (4) through (57) if CHANGE 1, and
 59. terminating the process if CHANGE
 0. 